﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace _201206QuanLyBanHang.ChucNang
{
    public partial class DMNhanVien : Form
    {

        //khai báo biên;
        private int manhanvien;
        private string honhanvien;
        private string tennhanvien;
        private string dienthoai;
        private string hinhanh;
        private int tinhtrang;
        private string ghichu;
        private string username;
        private string password;
        bool flat = true;
        int sodong;
       
        //khai báo kết nối
        private string sqlStr1 = "select manhanvien,honhanvien,tennhanvien,dienthoainv,hinhnhanvien,tinhtrangnv,ghichu_nv,username,password from nhanvien where tinhtrangnv=0 order by manhanvien";
        private string sqlStr ="select manhanvien,honhanvien,tennhanvien,dienthoainv,hinhnhanvien,tinhtrangnv,ghichu_nv,username,password from nhanvien where tinhtrangnv=1 order by manhanvien";
        private BLL_Nhanvien db = new BLL_Nhanvien();
        private DataSet ds = new DataSet();

        public DMNhanVien()
        {
            InitializeComponent();
            DataBind(sqlStr);
            setcontrol(false);
        }
        public void DataBind1(string sql)
        {
            ds = db.getDMNhanvien(sql);
            dgnhanvien.DataSource = ds.Tables[0];
            dgnhanvien.Columns[0].HeaderText = "Mã số";
            dgnhanvien.Columns[1].HeaderText = "Họ";
            dgnhanvien.Columns[2].HeaderText = "Tên";
            dgnhanvien.Columns[3].HeaderText = "Điện thoại";
            dgnhanvien.Columns[4].HeaderText = "Hình ảnh";
            dgnhanvien.Columns[4].Visible = false;
            dgnhanvien.Columns[5].HeaderText = "Tình trạng";
            dgnhanvien.Columns[5].Visible = false;
            dgnhanvien.Columns[6].HeaderText = "Ghi chú";
            dgnhanvien.Columns[7].HeaderText = "username";
            dgnhanvien.Columns[8].HeaderText = "password";

            dgnhanvien.AllowUserToAddRows = false;

            //setdoituong();
            this.dgnhanvien.AutoResizeColumns(
               DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
            this.dgnhanvien.ReadOnly = false;
            dgnhanvien.AllowUserToAddRows = false;
            sodong = 0;
            sodong = ds.Tables[0].Rows.Count;
            this.grunhanvien.Text = "Số lượng nhân viên: ";
            this.grunhanvien.Text = this.grunhanvien.Text + sodong;
        }
        public void DataBind(string sql)
        {
            ds = db.getDMNhanvien(sql);
           dgnhanvien.DataSource = ds.Tables[0];
           dgnhanvien.Columns[0].HeaderText = "Mã số";
           dgnhanvien.Columns[1].HeaderText = "Họ";
           dgnhanvien.Columns[2].HeaderText = "Tên";
           dgnhanvien.Columns[3].HeaderText = "Điện thoại";
           dgnhanvien.Columns[4].HeaderText = "Hình ảnh";
           dgnhanvien.Columns[4].Visible = false;
           dgnhanvien.Columns[5].HeaderText = "Tình trạng";
           dgnhanvien.Columns[5].Visible=false;
           dgnhanvien.Columns[6].HeaderText = "Ghi chú";
           dgnhanvien.Columns[7].HeaderText = "username";
           dgnhanvien.Columns[7].Visible = false;
           dgnhanvien.Columns[8].HeaderText = "password";
           dgnhanvien.Columns[8].Visible = false;
           
           dgnhanvien.AllowUserToAddRows = false;

            //setdoituong();
           this.dgnhanvien.AutoResizeColumns(
              DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
           this.dgnhanvien.ReadOnly = false;
           dgnhanvien.AllowUserToAddRows = false;
            sodong = 0;
            sodong = ds.Tables[0].Rows.Count;
            this.grunhanvien.Text = "Số lượng nhân viên: ";
            this.grunhanvien.Text = this.grunhanvien.Text + sodong;
        }
        /// <summary>
        /// hàm lưu thông tin đầu tư
        /// </summary>
        private void luu()
        {
            //lấy thông tin lưu trữ
            manhanvien= int.Parse(this.txtmanv.Text);
            honhanvien = this.txthonv.Text;
            tennhanvien = this.txttenvn.Text;
            dienthoai = this.txtdienthoainv.Text;
            //Load lay sau
            hinhanh = this.btnhinh.Text;
            if (cktinhtrang.Checked)
                tinhtrang = 1;
            else
                tinhtrang = 0;
            ghichu = this.txtghichu.Text;
            username = this.txtuser.Text;
            password = this.txtpass.Text;
           

            string err = "";
            if (!db.insertDMNhanvien(ref err, manhanvien, honhanvien, tennhanvien, dienthoai, hinhanh, tinhtrang, ghichu, username, password))
            {
                MessageBox.Show(err.ToString());
            }
            else
            {
                MessageBox.Show("lưu thành công");
            }

            DataBind(sqlStr);

        }
        /// <summary>
        /// hàm sửa thông tin loại khách hàng
        /// </summary>
        private void DMSua()
        {
            string err = "Không thể sửa thông tin";
            manhanvien = int.Parse(this.txtmanv.Text);
            honhanvien = this.txthonv.Text;
            tennhanvien = this.txttenvn.Text;
            dienthoai = this.txtdienthoainv.Text;
            //Load lay sau
            hinhanh = this.btnhinh.Text;
            if (cktinhtrang.Checked)
                tinhtrang = 1;
            else
                tinhtrang = 0;
            ghichu = this.txtghichu.Text;
            username = this.txtuser.Text;
            password = this.txtpass.Text;

            if (!db.updateDMNhanvien(ref err,manhanvien,honhanvien,tennhanvien,dienthoai,hinhanh,tinhtrang,ghichu,username,password))
            {
                MessageBox.Show(err.ToString());
            }
            DataBind(sqlStr);
        }
        /// <summary>
        /// xóa thông tin đầu tư
        /// </summary>
        private void DMXoa()
        {
            try
            {
                manhanvien= int.Parse(this.txtmanv.Text);
            }
            catch
            {
                MessageBox.Show("Chọn khu vực để xóa");
                return;
            }
            DialogResult result;
            result = MessageBox.Show("Bạn có muốn xóa không", "Xóa dữ liệu trong danh mục khu vực", MessageBoxButtons.YesNo);
            if (result == DialogResult.Yes)
            {
                string err = "Dữ liệu không thể xóa";
                if (!db.deleteDMNhanvien(ref err,manhanvien))
                    MessageBox.Show(err);
                else
                    MessageBox.Show("Đã xóa thành công");
            }
            DataBind(sqlStr);
        }


        //các hàm tiện ích khác

        /// <summary>
        /// hàm lấy dữ liệu vào trong textbox
        /// </summary>
        private void bin()
        {

            this.txtmanv.Text = dgnhanvien[dgnhanvien.Columns[0].Index, dgnhanvien.CurrentRow.Index].Value.ToString();
            this.txthonv.Text = dgnhanvien[dgnhanvien.Columns[1].Index, dgnhanvien.CurrentRow.Index].Value.ToString();
            this.txttenvn.Text = dgnhanvien[dgnhanvien.Columns[2].Index, dgnhanvien.CurrentRow.Index].Value.ToString();
            this.txtdienthoainv.Text = dgnhanvien[dgnhanvien.Columns[3].Index, dgnhanvien.CurrentRow.Index].Value.ToString();
            //load lai sau
            this.btnhinh.Text = dgnhanvien[dgnhanvien.Columns[4].Index, dgnhanvien.CurrentRow.Index].Value.ToString();
            if(int.Parse(dgnhanvien[dgnhanvien.Columns[5].Index, dgnhanvien.CurrentRow.Index].Value.ToString())==1)
                this.cktinhtrang.Checked=true;
            else
                this.cktinhtrang.Checked=false;
      
            this.txtghichu.Text = dgnhanvien[dgnhanvien.Columns[6].Index, dgnhanvien.CurrentRow.Index].Value.ToString();
            this.txtuser.Text = dgnhanvien[dgnhanvien.Columns[7].Index, dgnhanvien.CurrentRow.Index].Value.ToString();
            this.txtpass.Text = dgnhanvien[dgnhanvien.Columns[8].Index, dgnhanvien.CurrentRow.Index].Value.ToString();
           
            flat = true;
        }
        /// <summary>
        /// hàm lấy stt de làm mã tự động
        /// </summary>
        /// <returns></returns>
        public int laystt()
        {
            int stt = 1;
            string sqlstring = "select max(manhanvien) from nhanvien";
            string err = "";
            object kq = db.layma(ref err, sqlstring);
            if (kq != System.DBNull.Value)
                stt = Convert.ToInt32(kq) + 1;
            return stt;
        }

        private void BtnThem_Click(object sender, EventArgs e)
        {
            flat = false;
            this.txtmanv.Text = laystt().ToString();
            this.txthonv.Focus();
            this.txttenvn.Text = "";
            this.txtdienthoainv.Text = "";
            //se load sau
            this.btnhinh.Text = "";
            this.cktinhtrang.Checked = true;
            this.txtghichu.Text = "";
            this.txtuser.Text = "";
            this.txtpass.Text = "";

            //set lai trang thai nut
            this.Btnluu.Enabled = true;
            this.BtnXoa.Enabled = true;
            setcontrol(true);
        }

        private void Btnluu_Click(object sender, EventArgs e)
        {
            if (flat)
                DMSua();
            else
                luu();
            //set doi tuong
          
            this.txthonv.Focus();
            this.txttenvn.Text = "";
            this.txtdienthoainv.Text = "";
            //se load sau se xoa hinh
            this.btnhinh.Text = "";
            this.cktinhtrang.Checked = true;
            this.txtghichu.Text = "";
            this.txtuser.Text = "";
            this.txtpass.Text = "";
            this.setcontrol(false);
        }

        private void BtnXoa_Click(object sender, EventArgs e)
        {
            DMXoa();
            //set thiet lap
            this.txthonv.Focus();
            this.txttenvn.Text = "";
            this.txtdienthoainv.Text = "";
            //se load sau se xoa hinh
            this.btnhinh.Text = "";
            this.cktinhtrang.Checked = true;
            this.txtghichu.Text = "";
            this.txtuser.Text = "";
            this.txtpass.Text = "";
            setcontrol(false);
        }
        private void dgnhanvien_Click(object sender, EventArgs e)
        {
            try
            {
                this.dgnhanvien.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
                this.dgnhanvien.BeginEdit(false);
                this.dgnhanvien.CurrentRow.Selected = true;
                this.bin();
                this.Btnluu.Enabled = true;
                this.BtnXoa.Enabled = true;
                setcontrol(true);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        public string ToTitleCase(string str)
        {
            str = str.ToLower();
            char[] charArr = str.ToCharArray();
            charArr[0] = char.ToUpper(charArr[0]);
            foreach (Match m in Regex.Matches(str, @"\s\S"))
            {
                charArr[m.Index + 1] = m.Value.ToUpper().Trim()[0];
            }
            return new string(charArr);
        }

        private void txthonv_Leave(object sender, EventArgs e)
        {
            if (this.txthonv.Text != "")
            {
                string t = txthonv.Text;
                txthonv.Text = ToTitleCase(t);
            }
        }

        private void txttenvn_Leave(object sender, EventArgs e)
        {
             if (this.txttenvn.Text != "")
            {
                string t = txttenvn.Text;
                txttenvn.Text = ToTitleCase(t);
            }
        }

        private void txtuser_Leave(object sender, EventArgs e)
        {
              if (this.txtuser.Text != "")
            {
                string t = txtuser.Text;
                txtuser.Text = t.ToLower();
            }
        
        }

        private void txtpass_Leave(object sender, EventArgs e)
        {
            if (this.txtpass.Text != "")
            {
                string t = txtpass.Text;
                txtpass.Text = t.ToLower();
            }
        }

        private void checkBoxX1_CheckedChanged(object sender, EventArgs e)
        {
            if (ckconlam.Checked)
            {
                DataBind(sqlStr);
            }
            else
            {
                DataBind1(sqlStr1);
            }
        }

        private void setcontrol(bool t)
        {
            this.txthonv.Enabled=t;
            this.txttenvn.Enabled = t;
            this.txtuser.Enabled = t;
            this.txtpass.Enabled = t;
            this.txtdienthoainv.Enabled = t;
        }
    }
}
